// pages/login/login.js
const app = getApp()
wx.cloud.init()
const db = wx.cloud.database()
const defaultAvatarUrl = '/icon/default-avatar.png'

Page({
  /**
   * 页面的初始数据
   */
  data: {
    avatarUrl: defaultAvatarUrl,
    nickname: '',
    currentYear: new Date().getFullYear(),
    agreedPrivacy: false,
    avatarSelected: false, // 跟踪头像是否已选择
    showAvatarTip: true // 是否显示头像选择提示
  },

  onLoad() {
   // 修改后的逻辑
const userId = wx.getStorageSync('id')
const isGuest = wx.getStorageSync('isGuest')

// 只有非游客用户才自动跳转到账单页面
if (userId && !isGuest) {
  wx.switchTab({
    url: '../bill/bill'
  })
} else {
  // 新用户，显示操作引导
  setTimeout(() => {
    this.showUserGuide()
  }, 1000)
}
},

  onShow() {
    // 重置页面状态，确保每次显示时都是初始状态
    this.setData({
      avatarUrl: defaultAvatarUrl,
      nickname: '',
      agreedPrivacy: false,
      avatarSelected: false,
      showAvatarTip: true
    })
const userId = wx.getStorageSync('id')
const isGuest = wx.getStorageSync('isGuest')
// 只有非游客用户才自动跳转到账单页面
if (userId && !isGuest) {
  wx.switchTab({
    url: '../bill/bill'
  })
}
  },



  // 选择头像
  onChooseAvatar(e) {
    const { avatarUrl } = e.detail
    
    // 检查是否成功获取到头像
    if (!avatarUrl || avatarUrl === '') {
      wx.showToast({
        title: '头像获取失败，请重试',
        icon: 'none',
        duration: 2000
      })
      return
    }
    
    // 显示加载提示
    wx.showLoading({
      title: '设置头像中...',
      mask: true
    })
    
    // 模拟处理时间，给用户反馈
     setTimeout(() => {
       this.setData({
         avatarUrl,
         avatarSelected: true,
         showAvatarTip: false
       })
       
       wx.hideLoading()
       
       // 成功提示
       wx.showToast({
         title: '头像设置成功',
         icon: 'success',
         duration: 1500
       })
     }, 500)
  },

  // 头像选择失败处理
  onAvatarError(e) {
    console.error('头像选择失败：', e)
    
    wx.showModal({
      title: '头像选择提示',
      content: '头像选择失败，可能的解决方案：\n\n1. 请先尝试选择相册中的照片\n2. 然后再选择微信头像\n3. 或者直接使用相册照片作为头像\n\n这样可以提高成功率。',
      showCancel: true,
      cancelText: '我知道了',
      confirmText: '重新选择',
      confirmColor: '#2b85e4',
      success: (res) => {
        if (res.confirm) {
          // 用户选择重新选择，可以给出操作指引
          wx.showToast({
            title: '请点击头像区域重新选择',
            icon: 'none',
            duration: 2000
          })
        }
      }
    })
  },

  // 输入昵称
  onInputNickname(e) {
    this.setData({
      nickname: e.detail.value
    })
  },

  // 隐私协议勾选
  onAgreePrivacyChange(e) {
    this.setData({
      agreedPrivacy: e.detail
    })
  },

  // 微信登录
  wxLogin() {
    if (!this.data.agreedPrivacy) {
      wx.showToast({
        title: '请先同意用户协议',
        icon: 'none'
      })
      return
    }

    // 检查是否已选择头像和输入昵称
    if (!this.data.avatarSelected || this.data.avatarUrl === defaultAvatarUrl) {
      wx.showModal({
        title: '请选择头像',
        content: '为了更好的使用体验，请先选择您的头像。\n\n温馨提示：如果直接选择微信头像失败，可以先选择相册照片，再选择微信头像。',
        showCancel: false,
        confirmText: '我知道了',
        confirmColor: '#2b85e4'
      })
      return
    }

    if (!this.data.nickname || this.data.nickname.trim() === '') {
      wx.showModal({
        title: '请输入昵称',
        content: '请输入您的昵称，这将作为您在52记账中的显示名称。',
        showCancel: false,
        confirmText: '我知道了',
        confirmColor: '#2b85e4'
      })
      return
    }

    // 昵称长度验证
    if (this.data.nickname.trim().length > 20) {
      wx.showToast({
        title: '昵称不能超过20个字符',
        icon: 'none'
      })
      return
    }

    wx.showLoading({
      title: '登录中...',
      mask: true
    })

    // 获取用户openid
    wx.cloud.callFunction({
      name: 'login',
      success: res => {
        const openid = res.result.openid
        // 查询用户是否已注册
        db.collection('test').where({
          _openid: openid
        }).get().then(res => {
          if (res.data.length === 0) {
            // 新用户，添加到数据库
            db.collection('test').add({
              data: {
                username: this.data.nickname,
                avatar: this.data.avatarUrl,
                createTime: new Date()
              }
            }).then(res => {
              wx.setStorageSync('id', res._id)
              wx.setStorageSync('name', this.data.nickname)
              wx.setStorageSync('avatar', this.data.avatarUrl)
              wx.setStorageSync('isGuest', false)
              app.globalData.isGuest = false
              wx.hideLoading()
              wx.switchTab({
                url: '../bill/bill'
              })
            }).catch(err => {
              console.error('注册失败：', err)
              wx.hideLoading()
              wx.showToast({
                title: '注册失败，请重试',
                icon: 'none'
              })
            })
          } else {
            // 更新用户信息
            db.collection('test').doc(res.data[0]._id).update({
              data: {
                username: this.data.nickname,
                avatar: this.data.avatarUrl,
                updateTime: new Date()
              }
            }).then(() => {
              wx.setStorageSync('id', res.data[0]._id)
              wx.setStorageSync('name', this.data.nickname)
              wx.setStorageSync('avatar', this.data.avatarUrl)
              wx.setStorageSync('isGuest', false)
              app.globalData.isGuest = false
              wx.hideLoading()
              wx.switchTab({
                url: '../bill/bill'
              })
            }).catch(err => {
              console.error('更新用户信息失败：', err)
              wx.hideLoading()
              wx.showToast({
                title: '登录失败，请重试',
                icon: 'none'
              })
            })
          }
        }).catch(err => {
          console.error('查询用户失败：', err)
          wx.hideLoading()
          wx.showToast({
            title: '登录失败，请重试',
            icon: 'none'
          })
        })
      },
      fail: err => {
        console.error('调用登录云函数失败：', err)
        wx.hideLoading()
        wx.showToast({
          title: '登录失败，请重试',
          icon: 'none'
        })
      }
    })
  },

  // 游客登录
  guestLogin() {
    if (!this.data.agreedPrivacy) {
      wx.showToast({
        title: '请先同意用户协议',
        icon: 'none'
      })
      return
    }

    // 生成游客ID：guest_时间戳+4位随机数
    const timestamp = Date.now()
    const randomNum = Math.floor(Math.random() * 9000) + 1000 // 生成1000-9999的随机数
    const guestId = `guest_${timestamp}${randomNum}`
    
    // 生成随机游客昵称
    const guestNickname = `游客${randomNum}`
    
    // 存储游客信息
    wx.setStorageSync('id', guestId)
    wx.setStorageSync('name', guestNickname)
    wx.setStorageSync('avatar', '/icon/youkedenglu.png')
    wx.setStorageSync('isGuest', true)
    wx.setStorageSync('guestLoginTime', timestamp)
    
    // 设置全局游客状态
    app.globalData.isGuest = true
    
    // 显示提示
    wx.showToast({
      title: '欢迎体验52记账',
      icon: 'success',
      duration: 2500
    })
    
    // 跳转到记账首页
    setTimeout(() => {
      wx.switchTab({
        url: '../bill/bill'
      })
    }, 1500)
  },



  // 显示用户操作引导
  showUserGuide() {
    wx.showModal({
      title: '欢迎使用52记账',
      content: '为了更好的使用体验，请按以下步骤操作：\n\n1. 点击头像区域选择您的头像\n2. 输入您的昵称\n3. 勾选同意用户协议\n4. 点击微信登录开始使用\n\n💡 小贴士：如果微信头像选择失败，可以先选择相册照片再选择微信头像。',
      showCancel: true,
      cancelText: '稍后操作',
      confirmText: '开始设置',
      confirmColor: '#2b85e4',
      success: (res) => {
        if (res.confirm) {
          // 用户选择开始设置，可以高亮头像区域或给出提示
          wx.showToast({
            title: '请先点击上方头像区域',
            icon: 'none',
            duration: 2000
          })
        }
      }
    })
  },

  // 显示隐私条款
  showPrivacyTerms() {
    wx.showModal({
      title: '用户协议和隐私条款',
      content: '感谢您使用52记账！\n\n1. 我们重视您的个人信息和隐私保护\n2. 我们只会收集必要的用户信息\n3. 您的记账数据将安全加密存储\n4. 未经您的同意，我们不会向第三方分享您的信息\n5. 游客模式下，数据仅在本地存储，关闭小程序后将被清空\n\n继续使用表示您同意我们的用户协议和隐私政策。',
      showCancel: false,
      confirmText: '我知道了',
      confirmColor: '#2b85e4'
    })
  }
})